package framework.helpers;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

import framework.ApplicationManager;

public class WebDriverHelper 
{
    private static WebDriver driver;
    private StringBuffer verificationErrors = new StringBuffer();    
    @SuppressWarnings("unused")
    private final ApplicationManager app;
  
	/**
	 * Инициализирует драйвер, выставляет время ожидания, максимально раскрывает окно.
	 *
	 * @param app ссылка на ApplicationaManager
	 */
    public WebDriverHelper(ApplicationManager app) {
        this.app = app;
        String browser = app.getProperty("browser");
		switch (browser) {
		case "firefox":
			driver = new FirefoxDriver();
			break;
		case "ie":
			driver = new InternetExplorerDriver();
			break;
		case "chrome":
			driver = new ChromeDriver();
			break;
		default:
			driver = new HtmlUnitDriver();
			break;
		}      
        driver.manage().timeouts().implicitlyWait(app.getIntProperty("implicitWait", "30"), TimeUnit.SECONDS);
        driver.get(app.getProperty("baseUrl"));
        maximizeWindow();
    }
    
	/**
	 * Останавливает драйвер.
	 */
    public void stop() {
        driver.quit();
    }

    public String getVerificationErrors() {
		return verificationErrors.toString();
	}

	/**
	 * Возвращает ссылку на текущий драйвер.
	 *
	 * @return ссылка на драйвер
	 */
    public WebDriver getDriver() {
        return driver;
    }
    
	private void maximizeWindow() {
		driver.manage().window().maximize();
	}      
}
